package com.xhb.campusservices.pojo;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xhb.campusservices.enums.PermissionsEnum;
import com.xhb.campusservices.enums.SexEnum;
import com.xhb.campusservices.enums.StateEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 
 * @TableName 用户表
 */
@TableName(value ="user")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    /**
     * 用户ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户名
     */
    @NotBlank(message = "账号不能为空")
    private String username;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空")
    private String password;

    /**
     * 姓名
     */
    @NotBlank(message = "姓名不能为空")
    private String name;

    /**
     * 电话
     */
    @NotBlank(message = "电话不能为空")
    @Size(min = 7,max = 11,message = "电话长度要求7-11位之内")
    private String phone;

    /**
     * 邮箱
     */
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式不正确")
    private String email;

    /**
     * 性别
     */
    private SexEnum sex;

    /**
     * 生日
     * @JsonFormat 默认是标准时区的时间，多出现少8小时的情况
     * 使用时，按需求加上时区 北京时间 东八区 timezone=”GMT+8”
     */
    @NotNull(message = "生日不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date birthday;


    /**
     * 头像
     */
    private String photo;

    /**
     * 状态
     * 状态为0是启用，1是未启用
     */
    private StateEnum state;

    /**
     * 权限
     * 权限为0是正常，1是限制接单
     */
    private PermissionsEnum permissions;

    /**
     * 逻辑删除
     */
    @TableLogic
    private Integer isDeleted;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}